﻿/////////////////////////////////////////////////
//文件名:LocalFile
//描  述:
//创建者:刘凡平(Iveely Liu)
//邮  箱:945222889@qq.com
//组  织:Iveely
//年  份:2012/5/11 9:51:33
///////////////////////////////////////////////


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using IveelySE.BigData.MasterNode;
using IveelySE.BigData.Common;

namespace IveelySE.BigData.StoreNode
{
    /// <summary>
    /// 本地文件操作
    /// （如果是linux 则重写此文件，此时默认全是Windows文件操作）
    /// </summary>
    public class LocalFile
    {
        /// <summary>
        /// 创建本地文件
        /// </summary>
        /// <param name="fileName">文件名</param>
        public static void CreateFile(string fileName)
        {
            //调用windows文件创建
            File.AppendAllText("root\\" + fileName,"");
        }

        /// <summary>
        /// 以行为方式向文件追加数据
        /// </summary>
        /// <param name="fileName">文件名</param>
        /// <param name="data">文本数组</param>
        public static void AppendText(string fileName, PObject data)
        {
            List<PObject> list = (List<PObject>)Common.Serialize.UnSerailzable("root\\"+fileName);
            if (list == null)
            {
                list = new List<PObject>();
            }
            list.Add(data);
            Common.Serialize.Serailzable(list, "root\\"+fileName);
        }

        /// <summary>
        /// 获取对象
        /// </summary>
        /// <param name="fileName">序列化文件</param>
        /// <returns>返回对象</returns>
        public static Object GetObj(string fileName)
        {
            //如果序列文件存在
            if (File.Exists("root\\" + fileName))
            {
                //执行反序列化
                return Common.Serialize.UnSerailzable("root\\"+fileName);
            }
            //返回空
            return null;
        }

        /// <summary>
        /// 设定序列化文件
        /// </summary>
        /// <param name="fileName">文件名</param>
        /// <param name="obj">对象</param>
        public static void SetObj(string fileName,Object obj)
        {
            Common.Serialize.Serailzable(obj,"root\\"+fileName);
        }
    }
}
